const clipStr =
{
   autoClipTheStr(tmp){
      var self = this
      var str = tmp
      var renderClipArr = str.split('&')

      var lastestArr = []
      var computedNewLine = function (str) {
        var numStr = ''
        var strArr = str.split('')
        var tmpArr = []
        strArr.forEach(function (val, key) {
          numStr += val

          var len = self.countLengthRE(numStr).len
          if (len >= 12) {
            tmpArr.push(numStr)
            numStr = ''
          }
          else if (key == strArr.length - 1) {
            tmpArr.push(numStr)
          }
        })
        // 最后成功分割的数组
        return tmpArr
      }
      renderClipArr.forEach(function (str, key) {
        // 计算长度
        var len = self.countLengthRE(str).len
        if (len > 14) {
          var res = computedNewLine(str)
          lastestArr = lastestArr.concat(res)
        } else {
          // 如果没有自动换则行合并
          lastestArr = lastestArr.concat(str)
        }

      })
      return lastestArr
    },
    countLengthRE(str){
      // 转换回车符号 为 & 
      str = str.replace(/[\r\n]/g, '&')
      var totalLen = 48  // 计算剩余字符
      var maxLen = 48 // 设置maxLen
      var repOne = /[0-9a-zA-Z|\s]/  // 字母数字 
      var repEnter = /[\&]/  // 换行符
      var strAttr = str.split('')
      var tmp = ''
      var len = 0
      if (strAttr.length == 0) {
        return {
          len: len,
          leftLen: totalLen,
          tmp: tmp,
          maxLen: maxLen
        }
      } else {
        strAttr.forEach(function (val, key) {
          if (repOne.test(val)) {
            tmp += val
            len += 0.5
            maxLen += 0.5
          }
          else if (repEnter.test(val)) {
            tmp += '&'
            maxLen++
          }
          else {
            tmp += val
            len++
          }
        })
        // maxLen: Math.ceil(countData.maxLen), // 向上取 textarea最大字符 
        // leftLen: Math.floor(countData.leftLen) // 向下取 页面显示 剩余字符 
        return {
          len: len,
          leftLen: totalLen - len,
          maxLen: maxLen,
          tmp: tmp
        }
      }
    },
    /*
    函数说明 drawText
    根据参数对数组元素进行 -- 换行画出
    @params {Object} rows 换行分割数组, 画出对效果：一个元素占一行
    @params {Num}  x ：x方向的初始偏移量
    @params {Num}  y ：y方向的初始偏移量
    @params {Num}  y ：y方向的行距偏移量
    @params {Object} context 当前canvas对象
  */
    drawText(rows, x, y, offset, context) {
      context.beginPath()
      for (var b = 0; b < rows.length; b++) {
        context.setShadow(0, 1, 2, '#BDBDBD')
        
        context.fillText(rows[b], x, y + b * (offset));
        
      }
      
      context.restore();
      context.stroke();
    }
}
module.exports = clipStr    